# python中的异常处理和java类似try catch finally
# try -> except -> finally
# 与java不同的是，多了一个else，如果没有异常，则执行else
# else可以使用try中定义的变量
try:
    s = input('请输入一个数字: ')
    n = int(s)
    n = 5 / n
    print(n)
except ZeroDivisionError as e:
    print('除数不能为0')
    print('原始报错信息', e)
    import traceback
    # 类似java中的e.printStackTrace()
    traceback.print_exc()
else:
    print('运行没有被except语句捕获，执行else模块')
    print('n的值为', n)
finally:
    print('无论如何，都要执行finally模块')

# 手动抛出异常使用raise，类似java中的throw
try:
    pwd = input('请输入你的密码：')
    if len(pwd) < 8:
        raise Exception('密码的长度不够，请输入一个8位以上的密码')
except Exception as e:
    print(e)
